package com.example.rwq_test.anno.customAnno.EventAnnotation;

import java.util.HashMap;
import java.util.Map;

/**
 * @Description 事件枚举类
 * @Author renweiqiang
 * @Date 2024/4/28 上午10:06
 */
public enum EventTypeEnum {
    EVENT1(1, "可用于客户端"),
    EVENT2(2, "可用于处理器");

    /**
     * 标识
     */
    private final Integer code;
    /**
     * 描述
     */
    private final String desc;

    EventTypeEnum(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    /**
     * 枚举类集合
     *  java集合都可以的使用双花括号直接初始化
     *   1. 第一个花括号表示匿名内部类
     *   2. 第二花括号表示匿名内部类的构造代码块，可以有多个。构造代码块在构造函数前执行，匿名内部类的构造代码块在调用父类同参构造函数后执行
     */
    private static final Map<Integer, EventTypeEnum> enumMap = new HashMap(){
        {
            for (EventTypeEnum value : EventTypeEnum.values()) {
                // this.put(value.code, value) 和下边的都可以的
                put(value.code, value);
            }
        }
    };

    public static EventTypeEnum getByCode(Integer code) {
        return enumMap.get(code);
    }

    public Integer getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }
}
